Database Management System (DBMS) software may use a database query language to store and retrieve data in a database. The database query language that may be, but is not limited to, a Structured Query Language (SQL) interface. A database is organized into tables that consist of rows and columns of data. The rows may be called tuples or records or rows.
A table in a database can be accessed using an index. An index is an ordered set of references (e.g., pointers) to the records in the table. The index is used to access each record in the table using a key (i.e., one of the fields or attributes of the record, which corresponds to a column). The term “key” may also be referred to as “index key”. An index is based on one or more columns of the table.
A query may be described as a request for information from a database based on specific conditions. A query typically includes one or more predicates. A predicate may be described as an element of a search condition that expresses or implies a comparison operation (e.g., A=3).
Large object (LOB) data may be described as a collection of binary data stored in a single column or field in a table in a DBMS.
In DBMS and database Application Programming Interfaces (APIs), the interpretation of Large Object (LOB) data columns is left to a database application after retrieving the LOB data. Database applications retrieve raw LOB data from the database and use application logic to post process the LOB data.
Often, LOB data contains multimedia, audio, or image data, which is unstructured. Sometimes, however, the LOB data can also contain structured content (i.e., in the form of fields). For example, the structured content may include tags for fields, such as ‘artist’ and ‘title’ fields, embedded within the multimedia LOB data. In order to search for specific fields in the LOB data, the DBMS materializes the LOB data and sends the LOB data back to the requesting application. The requesting application programmatically inspects the contents of the LOB data looking for the specific value of a specific field. Some DBMSs may allow searching on a subset of the LOB data, but they first internally materialize the LOB data in order to accomplish this. Materializing the LOB data may be described as loading the LOB data into memory through an Input/Output (I/O) operation.
A Variable length LOB (VLOB) is a type of LOB and may be defined as having a certain number of fields, but, different records (i.e., instances) of the VLOB may have different fields that are valid or null (i.e., invalid). Thus, the VLOB may be described as having a varying number of valid fields.